/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package View;

import controller.UnidadeController;
import exception.DuplicateConstraintException;
import exception.RemoveConstraintException;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;
import javax.inject.Named;
import model.entidades.Unidade;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.Conversation;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;

/**
 *
 * @author helton
 */
@Named
@ConversationScoped
public class UnidadeView implements View, Serializable {

    @Inject
    UnidadeController controller;
    @Inject
    Conversation conversation;
    private Unidade unidade;
    private List<Unidade> unidades;

    @Override
    @PostConstruct
    public void init() {
        unidade = new Unidade();
    }

    @Override
    public void closeConversation(ActionEvent event) {
        conversation.close();
    }

    @Override
    public String actionNovo() {
        unidade = new Unidade();
        return "cadastrarUnidade";
    }

    @Override
    public String actionSalvar() throws DuplicateConstraintException {
        unidade.setNomUnid(unidade.getNomUnid().toUpperCase());
        if (unidade.getId() == null) {
            controller.insert(unidade);
        } else {
            controller.update(unidade);
        }
        unidades = null;
        return actionListar();
    }

    @Override
    public String actionListar() {
        return "listarUnidade";
    }

    @Override
    public void actionRemover() throws RemoveConstraintException {
        controller.remove(unidade);
        unidades = null;
    }

    public Unidade getUnidade() {
        return unidade;
    }

    public void setUnidade(Unidade unidade) {
        this.unidade = unidade;
    }

    public List<Unidade> getUnidades() {
        if (unidades == null) {
            unidades = controller.getAll();
        }
        return unidades;
    }

    public void setMotivos(List<Unidade> unidades) {
        this.unidades = unidades;
    }
}
